Testing of data processors has evolved as processors have become more and more complex. Initially processors, due to their lower transistor count design, could be effectively tested by running functional diagnostic programs. However, today's more advanced processors require that the testability be inherent in the design itself and that additional logic be incorporated into the processor solely to aid in testing.
When approaching how to test a processor, it should be assumed that the processor itself is designed correctly. Thus, in order to verify the proper manufacture of the processor, one need only verify the proper operation of the individual logic gates making up the processor. A known approach to testing a processor focuses upon a logic design that improves the ability to control the inputs of individual logic gates and observe the outputs of the individual logic gates. In this approach, stimulus patterns can easily be produced to test purely combinatorial logic, but it is much more difficult to generate patterns to adequately test sequential logic due to the existence of internal latches and/or feedback paths. In a complex microprocessor design the internal latches, state machines, and other design structures make writing test patterns very difficult. Some circuit designs also inherently have some logic gates that are not exercised except for a few special situations. Thus a fault can remain hidden unless a very special pattern of signals is presented to the circuitry.
Processors typically incorporate additional test circuitry to improve controllability and observability of the internal logic of the processor. Examples of such test circuitry include: (1) mechanisms for "dumping" the contents of a microcode read only memory (ROM), (2) logic for aiding in the testing of programmable logic array (PLA) structures, and (3) serial scan paths that provide access to internal logic blocks that are not otherwise easily accessible. The serial scan paths consist of a series of synchronously clocked master/slave latches, each of which is connected to various nodes within the circuit. The serial nature of these paths reduces the silicon area costs associated with testing, yet provides extended controllability and observation of nodes within the processor which are difficult to access.
The concept of serial scan has been extended in certain structured circuit design methodologies such that each gate within the design is controllable and observable. This type of structured design greatly enhances testability and simplifies the writing of test patterns, but adds significantly to the amount of circuitry required.
Typical testing of a data processor generally falls within two characterization categories: (1) functional testing and (2) structured testing. In functional testing, the microprocessor is operated in a normal mode by running a program which executes various instructions. In a production test environment, the program is provided by automatic test equipment (ATE) as inputs to the data processor, and the expected output results are verified by the tester. The processor can also verify its own operation by choosing an instruction sequence such that the results are known and are checked by the code itself. Functional testing requires careful selection of which instructions and operands to execute in order to verify a block of circuitry. Functional testing can be used to verify basic system operation, but it is very difficult to provide functional tests that can thoroughly verify a highly integrated data processor.
Structured testing, as previously discussed, involves the use of the internal features specifically designed to aid testability. These test features significantly modify the operation of internal logic blocks within the data processor in order to improve testability. During the use of such test features the normal operation of the processor is precluded, which may be disadvantageous.
Self-test is the ability of the processor, or system, to test itself and verify its own proper operation. Self-test of a central processor usually involves simple functional testing either from internal or external program memory. As an example of a processor with self-test ability, the MC68HC05, sold by Motorola Inc., executes a self-test program from internal ROM. Also, processors are known which have elaborate internal testing usually directed by special microcode. As an example, the 80386, sold by Intel Inc. functions under microcode control to perform internal testing.